<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of decoder
 *
 * @author alexey
 */
class ModelVinDecoder extends Model {

    //put your code here
    private function decode_year($year) {
        
    }

    private function decode_vin_chevrolet($vin, &$vin_data) {
        $wmi = &$vin_data['WMI'];
        $wmi['12'] = substr($vin, 0, 2);
        $wmi['geozone'] = '';
        $wmi['manufacturer'] = '';
        if ($wmi['12'] === 'KL') {
            $wmi['geozone'] = 'Korea (South)';
        } else if ($wmi['12'] === 'SU') {
            $wmi['geozone'] = 'Poland';
        } else if ($wmi['12'] === 'UL') {
            $wmi['geozone'] = 'USSR';
        } else if ($wmi['12'] === 'XW') {
            $wmi['geozone'] = 'USSR';
        } else if ($wmi['12'] === 'XU') {
            $wmi['geozone'] = 'USSR';
        } else if ($wmi['12'] === 'Y6') {
            $wmi['geozone'] = 'Ukraine';
        };

        $wmi['3'] = substr($vin, 2, 1);
        if ($wmi['3'] === '3') {
            $wmi['manufacturer'] = 'GM-DAT (KOR)';
        } else if ($wmi['3'] === '4') {
            $wmi['manufacturer'] = 'GM-DAT (KOR)';
        } else if ($wmi['3'] === 'A') {
            $wmi['manufacturer'] = 'GM-DAT (KOR)';
        } else if ($wmi['3'] === 'P') {
            $wmi['manufacturer'] = 'FSO (PL)';
        } else if ($wmi['3'] === 'V') {
            $wmi['manufacturer'] = 'GM-Uzbekistan';
        } else if ($wmi['3'] === 'B') {
            $wmi['manufacturer'] = 'GM-Uzbekistan';
        } else if ($wmi['3'] === 'D') {
            $wmi['manufacturer'] = 'ЗАЗ ЗАО';
        };
        // Декодируем 4 символ
        $vds = &$vin_data['VDS'];
        $vds['4'] = substr($vin, 3, 1);
        $vds['model'] = '';
        if (($vds['4'] === 'C')) {
            $vds['model'] = 'Chevrolet Captiva';
        } else if ($vds['4'] === 'J') {
            $vds['model'] = 'Chevrolet Cruze';
        } else if ($vds['4'] === 'K') {
            $vds['model'] = 'Chevrolet Spark';
        } else if ($vds['4'] === 'L') {
            $vds['model'] = 'Chevrolet Epica/Evanda';
        } else if ($vds['4'] === 'N') {
            $vds['model'] = 'Chevrolet Nubira/Lacetti';
        } else if ($vds['4'] === 'T') {
            $vds['model'] = ' Chevrolet Lanos';
        } else if ($vds['4'] === 'S') {
            $vds['model'] = ' Chevrolet Aveo/Kalos';
        };

        // 5 symbol. engine and hernya
        $engine_type = substr($vin, 4, 1);
        $vds['5'] = $engine_type;
        $vds['transmission'] = '';
        if ($engine_type === 'A') {
            $vds['transmission'] = 'передний привод, автоматическая КП';
        } else if ($engine_type === 'C') {
            $vds['transmission'] = 'передний привод, CVT (вариатор)';
        } else if ($engine_type === 'D') {
            $vds['transmission'] = 'полный привод, автоматическая КП';
        } else if ($engine_type === 'F') {
            $vds['transmission'] = 'передний привод, механическая КП';
        } else if ($engine_type === 'G') {
            $vds['transmission'] = 'полный привод, механическая КП';
        } else if ($engine_type === 'M') {
            $vds['transmission'] = 'задний привод, механическая КП';
        } else if ($engine_type === 'R') {
            $vds['transmission'] = 'задний привод, автоматическая КП';
        };
        //6 and 7 - kuzov
        $body_style = substr($vin, 5, 2);
        $vds['67'] = $body_style;
        $vds['body_style'] = '';
        if ($vds['67'] === '08') {
            $vds['body_style'] = 'хетчбек 3 дв.';
        } else if ($vds['67'] === '19') {
            $vds['body_style'] = 'седан 6-оконный';
        } else if ($vds['67'] === '26') {
            $vds['body_style'] = 'пикап/SUV';
        } else if ($vds['67'] === '35') {
            $vds['body_style'] = 'универсал 5 дв.';
        } else if ($vds['67'] === '48') {
            $vds['body_style'] = 'хетчбек 5 дв. 4-оконный';
        } else if ($vds['67'] === '55') {
            $vds['body_style'] = 'фургон (ЗАО "ЗАЗ")';
        } else if ($vds['67'] === '68') {
            $vds['body_style'] = 'хетчбек 5 дв. 6-оконный';
        } else if ($vds['67'] === '69') {
            $vds['body_style'] = 'седан 4-оконный';
        } else if ($vds['67'] === '75') {
            $vds['body_style'] = 'минивен';
        };
        //engine
        $engine = substr($vin, 7, 1);
        $vds['8'] = $engine;
        $vds['engine'] = '';
        if ($engine === '0') {
            $vds['engine'] = '1.0 литра SOHC';
        } else if ($engine === '2') {
            $vds['engine'] = '2.2 литра DOHC';
        } else if ($engine === '3') {
            $vds['engine'] = '1.8 литра DOHC (корейского производства, D-TEC II, T18SED, 122 л.с.)';
        } else if ($engine === '4') {
            $vds['engine'] = '0.8 литра SOHC (3 цилиндра)';
        } else if ($engine === '6') {
            $vds['engine'] = '1.6 литра DOHC (A16DMS, 106 л.с.) / 1.6 литра DOHC (F16D3, 106/109 л.с.)';
        } else if ($engine === '7') {
            $vds['engine'] = '1.4 литра DOHC (корейский/австралийский F14D3, 94 л.с.)';
        } else if ($engine === '8') {
            $vds['engine'] = '1.8 литра SOHC';
            //1.3 литра SOHC
            if (($wmi['3'] === 'D') && ($vds['4'] === 'T')) {
                $vds['engine'] = '1.3 литра SOHC';
            }
        } else if ($engine === '9') {
            $vds['engine'] = '1.4 литра SOHC (77 л.с.)';
        } else if ($engine === 'A') {
            $vds['engine'] = '1.4 литра SOHC (F14S3, 83 л.с.) / 1.5 литра (XQ CIH) / 1.4 литра DOHC (корейский/австралийский F14S3, 82 л.с.)';
        } else if ($engine === 'B') {
            $vds['engine'] = '1.8 литра DOHC (австралийский, E-TEC III, F18D3, 122 л.с.)';
        } else if ($engine === 'C') {
            $vds['engine'] = '1.3 литра SOHC (A13SMS, 75 л.с.)';
        } else if ($engine === 'D') {
            $vds['engine'] = '1.2 литра DOHC';
        } else if ($engine === 'E') {
            $vds['engine'] = '1.6 литра DOHC (Chevrolet Cruze) /'; //TODO: Исправить двигатель для Шивроли
        } else if ($engine === 'F') {
            $vds['engine'] = '2.0 литра SOHC (ECIH.) - старые / 2.4 литра DOHC (новые, Z24SED, 136 л.с.)';
        } else if ($engine === 'G') {
            $vds['engine'] = '1.5 литра SOHC (корейский G15MF, 75 л.с.) / 3.2 литра DOHC V6 (новые, 10HM, 230 л.с.)';
        } else if ($engine === 'H') {
            $vds['engine'] = '1.5 литра OHC продольный / 1.8 литра SOHC';
        } else if ($engine === 'K') {
            $vds['engine'] = '2.0 литра OHC TBI - старые / 2.0 литра DOHC R6 поперек - (новые, X20D1, 143 л.с.) ';
        } else if ($engine === 'L') {
            $vds['engine'] = '2.5 литра DOHC R6 поперек (новые, X25D1, 156 л.с.)';
        } else if ($engine === 'M') {
            $vds['engine'] = '0.8 литра DOHC (3 цилиндра)';
        } else if ($engine === 'P') {
            $vds['engine'] = '2.0 литра DOHC (LPG) (пропан-бутан)';
        } else if ($engine === 'R') {
            $vds['engine'] = '2.0 литра DOHC дизельный (Z20S, 150 л.с.)';
        } else if ($engine === 'S') {
            $vds['engine'] = '2.0 литра SOHC (LPG) (пропан-бутан)';
        } else if ($engine === 'T') {
            $vds['engine'] = '1.2 литра SOHC (корейский B12S1, 73 л.с.) / 1.5 литра OHC';
        } else if ($engine === 'U') {
            $vds['engine'] = '2.0 литра DOHC дизельный (Z20S, 120 л.с.)';
        } else if ($engine === 'V') {
            $vds['engine'] = '1.5 литра DOHC (корейский A15MF, 85 л.с.)';
        } else if ($engine === 'W') {
            $vds['engine'] = '2.0 литра SOHC (старые, C20NE, 112 л.с.) / 1.4 литра DOHC (новые, E-TEC III, F14D4 , 100 л.с.)';
        } else if ($engine === 'Y') {
            $vds['engine'] = '1.5 литра SOHC (корейские, F15S3, 85 л.с.) / 1.5 литра SOHC (корейский/румынский, A15SMS, 80/85 л.с.)';
        } else if ($engine === 'Z') {
            $vds['engine'] = '2.0 литра DOHC';
        };

        $mnf_yaer = substr($vin, 9, 3);
        $vds['10'] = $mnf_yaer;
        $vds['year'] = $this->decode_year($mnf_yaer);
    }

    private function decode_vin_daewoo($vin, &$vin_data) {
        $wmi = &$vin_data['WMI'];
        $wmi['12'] = substr($vin, 0, 2);
        $wmi['geozone'] = '';
        $wmi['manufacturer'] = '';
        if ($wmi['12'] === 'KL') {
            $wmi['geozone'] = 'Korea (South)';
        } else if ($wmi['12'] === 'SU') {
            $wmi['geozone'] = 'Poland';
        } else if ($wmi['12'] === 'UL') {
            $wmi['geozone'] = 'USSR';
        } else if ($wmi['12'] === 'XW') {
            $wmi['geozone'] = 'USSR';
        } else if ($wmi['12'] === 'Y6') {
            $wmi['geozone'] = 'Ukraine';
        };

        $wmi['3'] = substr($vin, 2, 1);
        if ($wmi['3'] === '3') {
            $wmi['manufacturer'] = 'GM-DAT (KOR)';
        } else if ($wmi['3'] === '4') {
            $wmi['manufacturer'] = 'GM-DAT (KOR)';
        } else if ($wmi['3'] === 'A') {
            $wmi['manufacturer'] = 'GM-DAT (KOR)';
        } else if ($wmi['3'] === 'P') {
            $wmi['manufacturer'] = 'FSO (PL)';
        } else if ($wmi['3'] === 'V') {
            $wmi['manufacturer'] = 'GM-Uzbekistan';
        } else if ($wmi['3'] === 'B') {
            $wmi['manufacturer'] = 'GM-Uzbekistan';
        } else if ($wmi['3'] === 'D') {
            $wmi['manufacturer'] = 'ЗАЗ ЗАО';
        };
        // Декодируем 4 символ
        $vds = &$vin_data['VDS'];
        $vds['4'] = substr($vin, 3, 1);
        $vds['model'] = '';
        if ($vds['4'] === '3') {
            $vds['model'] = 'Tico';
        } else if ($vds['4'] === '4') {
            $vds['model'] = 'Matiz (KOR)';
        } else if (($vds['4'] === 'C')) {
            $vds['model'] = 'Super Salon';
        } else if ($vds['4'] === 'E') {
            $vds['model'] = 'Prince';
        } else if ($vds['4'] === 'J') {
            $vds['model'] = 'Daewoo Espero/Nubira';
        } else if ($vds['4'] === 'N') {
            $vds['model'] = 'Super Salon OR Daewoo Nubira (J200)';
        } else if ($vds['4'] === 'M') {
            $vds['model'] = 'Matiz (POL)';
        } else if ($vds['4'] === 'P') {
            $vds['model'] = 'Daewoo Prince/Leganza/Magnus';
        } else if ($vds['4'] === 'T') {
            $vds['model'] = 'Daewoo Racer/Nexia/Lanos(Sens)/Kalos';
        } else if ($vds['4'] === 'U') {
            $vds['model'] = ' Daewoo Tacuma (Rezzo)';
        } else if ($vds['4'] === 'V') {
            $vds['model'] = 'Royal Duke/Leganza';
        }
        // 5 symbol. engine and hernya
        $engine_type = substr($vin, 4, 1);
        $vds['5'] = $engine_type;
        $vds['transmission'] = '';
        if ($engine_type === 'A') {
            $vds['transmission'] = 'передний привод, автоматическая КП';
        } else if ($engine_type === 'C') {
            $vds['transmission'] = 'передний привод, CVT (вариатор)';
        } else if ($engine_type === 'D') {
            $vds['transmission'] = 'полный привод, автоматическая КП';
        } else if ($engine_type === 'F') {
            $vds['transmission'] = 'передний привод, механическая КП';
        } else if ($engine_type === 'G') {
            $vds['transmission'] = 'полный привод, механическая КП';
        } else if ($engine_type === 'M') {
            $vds['transmission'] = 'задний привод, механическая КП';
        } else if ($engine_type === 'R') {
            $vds['transmission'] = 'задний привод, автоматическая КП';
        };
        //6 and 7 - kuzov
        $body_style = substr($vin, 5, 2);
        $vds['67'] = $body_style;
        $vds['body_style'] = '';
        if ($vds['67'] === '08') {
            $vds['body_style'] = 'хетчбек 3 дв.';
        } else if ($vds['67'] === '19') {
            $vds['body_style'] = 'седан 6-оконный';
        } else if ($vds['67'] === '26') {
            $vds['body_style'] = 'пикап/SUV';
        } else if ($vds['67'] === '35') {
            $vds['body_style'] = 'универсал 5 дв.';
        } else if ($vds['67'] === '48') {
            $vds['body_style'] = 'хетчбек 5 дв. 4-оконный';
        } else if ($vds['67'] === '55') {
            $vds['body_style'] = 'фургон (ЗАО "ЗАЗ")';
        } else if ($vds['67'] === '68') {
            $vds['body_style'] = 'хетчбек 5 дв. 6-оконный';
        } else if ($vds['67'] === '69') {
            $vds['body_style'] = 'седан 4-оконный';
        } else if ($vds['67'] === '75') {
            $vds['body_style'] = 'минивен';
        };
        //engine
        $engine = substr($vin, 7, 1);
        $vds['8'] = $engine;
        $vds['engine'] = '';
        if ($engine === '0') {
            $vds['engine'] = '1.0 литра SOHC';
        } else if ($engine === '2') {
            $vds['engine'] = '2.2 литра DOHC';
        } else if ($engine === '3') {
            $vds['engine'] = '1.8 литра DOHC (корейского производства, D-TEC II, T18SED, 122 л.с.)';
        } else if ($engine === '4') {
            $vds['engine'] = '0.8 литра SOHC (3 цилиндра)';
        } else if ($engine === '6') {
            $vds['engine'] = '1.6 литра DOHC (A16DMS, 106 л.с.) / 1.6 литра DOHC (F16D3, 106/109 л.с.)';
        } else if ($engine === '7') {
            $vds['engine'] = '1.4 литра DOHC (корейский/австралийский F14D3, 94 л.с.)';
        } else if ($engine === '8') {
            $vds['engine'] = '1.8 литра SOHC';
            //1.3 литра SOHC
            if (($wmi['3'] === 'D') && ($vds['4'] === 'T')) {
                $vds['engine'] = '1.3 литра SOHC';
            }
        } else if ($engine === '9') {
            $vds['engine'] = '1.4 литра SOHC (77 л.с.)';
        } else if ($engine === 'A') {
            $vds['engine'] = '1.4 литра SOHC (F14S3, 83 л.с.) / 1.5 литра (XQ CIH) / 1.4 литра DOHC (корейский/австралийский F14S3, 82 л.с.)';
        } else if ($engine === 'B') {
            $vds['engine'] = '1.8 литра DOHC (австралийский, E-TEC III, F18D3, 122 л.с.)';
        } else if ($engine === 'C') {
            $vds['engine'] = '1.3 литра SOHC (A13SMS, 75 л.с.)';
        } else if ($engine === 'D') {
            $vds['engine'] = '1.2 литра DOHC';
        } else if ($engine === 'E') {
            $vds['engine'] = '1.6 литра DOHC (Chevrolet Cruze) / 2.0 литра SOHC (SCIH.)'; //TODO: Исправить двигатель для Шивроли
        } else if ($engine === 'F') {
            $vds['engine'] = '2.0 литра SOHC (ECIH.) - старые / 2.4 литра DOHC (новые, Z24SED, 136 л.с.)';
        } else if ($engine === 'G') {
            $vds['engine'] = '1.5 литра SOHC (корейский G15MF, 75 л.с.) / 3.2 литра DOHC V6 (новые, 10HM, 230 л.с.)';
        } else if ($engine === 'H') {
            $vds['engine'] = '1.5 литра OHC продольный / 1.8 литра SOHC';
        } else if ($engine === 'K') {
            $vds['engine'] = '2.0 литра OHC TBI - старые / 2.0 литра DOHC R6 поперек - (новые, X20D1, 143 л.с.) ';
        } else if ($engine === 'L') {
            $vds['engine'] = '2.5 литра DOHC R6 поперек (новые, X25D1, 156 л.с.)';
        } else if ($engine === 'M') {
            $vds['engine'] = '0.8 литра DOHC (3 цилиндра)';
        } else if ($engine === 'P') {
            $vds['engine'] = '2.0 литра DOHC (LPG) (пропан-бутан)';
        } else if ($engine === 'R') {
            $vds['engine'] = '2.0 литра DOHC дизельный (Z20S, 150 л.с.)';
        } else if ($engine === 'S') {
            $vds['engine'] = '2.0 литра SOHC (LPG) (пропан-бутан)';
        } else if ($engine === 'T') {
            $vds['engine'] = '1.2 литра SOHC (корейский B12S1, 73 л.с.) / 1.5 литра OHC';
        } else if ($engine === 'U') {
            $vds['engine'] = '2.0 литра DOHC дизельный (Z20S, 120 л.с.)';
        } else if ($engine === 'V') {
            $vds['engine'] = '1.5 литра DOHC (корейский A15MF, 85 л.с.)';
        } else if ($engine === 'W') {
            $vds['engine'] = '2.0 литра SOHC (старые, C20NE, 112 л.с.) / 1.4 литра DOHC (новые, E-TEC III, F14D4 , 100 л.с.)';
        } else if ($engine === 'Y') {
            $vds['engine'] = '1.5 литра SOHC (корейские, F15S3, 85 л.с.) / 1.5 литра SOHC (корейский/румынский, A15SMS, 80/85 л.с.)';
        } else if ($engine === 'Z') {
            $vds['engine'] = '2.0 литра DOHC';
        };

        $mnf_yaer = substr($vin, 9, 3);
        $vds['10'] = $mnf_yaer;
        $vds['year'] = $this->decode_year($mnf_yaer);
    }

    public function decode_vin($vin) {

        $result = array(
            'WMI' => array(),
            'VDS' => array(),
            'VIS' => array(),
        );

        $wmi_code = substr($vin, 0, 3);

        if (
                ($wmi_code === 'KL3') ||
                ($wmi_code === 'KL4') ||
                ($wmi_code === 'KLA') ||
                ($wmi_code === 'SUP') ||
                ($wmi_code === 'ULV') ||
                ($wmi_code === 'XWB') ||
                ($wmi_code === 'Y6D')
        ) {
            $this->decode_vin_daewoo($vin, $result);
        } elseif (
                ($wmi_code === 'KL1') ||
                ($wmi_code === 'KLN') ||
                ($wmi_code === 'XUF') ||
                ($wmi_code === 'KLS')) {
            $this->decode_vin_chevrolet($vin, $result);
        };
        return $result;
    }
}
?>
